package com.smedi.ismedi.constructionproject.core.port.adapter.persistence.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smedi.ismedi.database.starter.model.BasicFieldEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Digits;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @Author: xulinjun
 * @Date: 2021-6-18 15:22
 */
@Data
@TableName(value = "cnt_project_basic")
public class ProjectBasicEntity extends BasicFieldEntity implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField(value = "hr_organization_id")
    private Long hrOrganizationId;

    @TableField(value = "project_name")
    private String projectName;

    @TableField(value = "project_code")
    private String projectCode;

    @TableField(value = "project_short_name")
    private String projectShortName;

    @TableField(value = "project_manager")
    private String projectManager;

    @TableField(value = "mobile")
    private String mobile;

    @TableField(value = "construction_permit")
    private String constructionPermit;

    @TableField(value = "project_category")
    private String projectCategory;

    @TableField(value = "project_cost")
    private BigDecimal projectCost;

    @TableField(value = "project_status")
    private String projectStatus;

    @TableField(value = "project_address")
    private String projectAddress;

    @TableField(value = "project_address_province")
    private String projectAddressProvince;

    @TableField(value = "project_address_city")
    private String projectAddressCity;

    @TableField(value = "project_map_location")
    private String projectMapLocation;

    @TableField(value = "finish_date")
    private LocalDate finishDate;

    @TableField(value = "contract_signing_date")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractSigningDate;

    @TableField(value = "contract_duration_begin")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractDurationBegin;

    @TableField(value = "contract_duration_end")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractDurationEnd;

    @TableField(value = "actual_duration_begin")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate actualDurationBegin;

    @TableField(value = "actual_duration_end")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate actualDurationEnd;

    @TableField(value = "epc_type")
    private String epcType;

    @TableField(value = "epc_unit")
    private String epcUnit;

    @TableField(value = "project_member")
    private String projectMember;

    @TableField(value = "general_contractor")
    private String generalContractor;

    @TableField(value = "supervision_unit")
    private String supervisionUnit;

    @TableField(value = "monitor_type")
    private String monitorType;

    @TableField(value = "monitor_type_note")
    private String monitorTypeNote;

    @TableField(value = "vivid_progress")
    private Integer vividProgress;

    @TableField(value = "vivid_progress_updated_date")
    private LocalDate vividProgressUpdatedDate;

    private String regionPicture;

    private String organizationPicture;

    private String entrustBook;

//    private LocalDateTime suspendedStartTime;
//
//    private LocalDateTime suspendedEndTime;
    @TableField(value = "project_type")
    private String projectType;

    @TableField(value = "ding_dept_key")
    private String dingDeptKey;

    private BigDecimal contractCost;

    private String category;
}
